﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using upcdew_20111_group2b.CapaDominio;
using upcdew_20111_group2b.CapaPersistencia;

namespace upcdew_20111_group2b.CapaPrueba
{
    [TestFixture]
    public class TestArea_ComunDAO
    {
        // 1. Instancia el objeto DAO
        private Area_ComunDAO area_ComunDAO = new Area_ComunDAO();

        [Test]
        public void TestCrear(){                                          
            // 2. Instanciando el objeto TO
            Area_Comun nuevaArea_Comun = new Area_Comun();

            // 3. Agregamos los valores del objeto TO
            nuevaArea_Comun.CodAreaComun = "A00001";
            nuevaArea_Comun.Tex_Tipo = "PISCINA";
            nuevaArea_Comun.Tex_Ubicacion = "A";
            nuevaArea_Comun.Num_Capacidad = 10;
            nuevaArea_Comun.Tex_Estado = "RESERVADO"; //HABILITADO, RESERVADO DESHABILITADO
            Area_Comun creadoArea_Comun = area_ComunDAO.Crear(nuevaArea_Comun);            

            // 4. Implementar las validaciones
        }     

        [Test]
        public void TestModificar()
        {
            Area_Comun Area_ComunModificar = new Area_Comun();

            // 3. Agregamos los valores del objeto TO
            Area_ComunModificar.CodAreaComun = "A00001";
            Area_ComunModificar.Tex_Tipo = "PISCINA";
            Area_ComunModificar.Tex_Ubicacion = "B";
            Area_ComunModificar.Num_Capacidad = 15;
            Area_ComunModificar.Tex_Estado = "HABILITADO"; //HABILITADO, RESERVADO DESHABILITADO

            // 3. Llamada al método del DAO a probar
            Area_Comun Area_ComunObtenido = area_ComunDAO.Modificar(Area_ComunModificar);
            // 4. ImplemResidenteentar las validaciones
            Assert.NotNull(Area_ComunModificar);
            //Assert.AreEqual(ViviendaModificar.Correo, tutorObtenido.Correo);

        }
        [Test]
        public void TestEliminar()
        {

            // 2. Instanciamos el objeto TO
            Area_Comun Area_ComunEliminar = new Area_Comun();
            Area_ComunEliminar.CodAreaComun = "A00001";
            // 3. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                area_ComunDAO.Eliminar(Area_ComunEliminar);
            });
            Assert.DoesNotThrow(delegate
            {
                area_ComunDAO.Eliminar(Area_ComunEliminar);
            });

            // 4. Implementar las validaciones
            Assert.NotNull(Area_ComunEliminar);
            Assert.NotNull(Area_ComunEliminar.CodAreaComun);


        }
        [Test]
        public void TestObtener()
        {
            // 2. Instanciamos el objeto TO
            String codigo = "A00001";
            // 3. Llamada al método del DAO a probar
            Area_Comun Area_ComunObtenido = area_ComunDAO.Obtener(codigo);
            // 4. Implementar las validaciones
            Assert.NotNull(Area_ComunObtenido);
            Assert.AreEqual(codigo, Area_ComunObtenido.CodAreaComun);
            Assert.NotNull(Area_ComunObtenido.Tex_Tipo);
        }

        [Test]
        public void ListarAreaComunTipo()
        {
            string estado = "HABIL";
            ICollection<Area_Comun> LAreaComun = area_ComunDAO.ListarArea_ComunPorEstado(estado);
            Assert.NotNull(LAreaComun);
            Assert.LessOrEqual(LAreaComun.Count, 0);
        }

    }
}